﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;

using MySql.Data.MySqlClient;

namespace MakeIT.MiraPark.Negocios
{
    public static partial class ModelBO
    {

        public static List<PerfilVO> getPerfis(bool comUsuarios, bool comObjetos)
        {
            List<PerfilVO> perfis = getPerfis();
            if (comUsuarios)
            {
                foreach (PerfilVO perfil in perfis)
                {
                    getPerfilXUsuarios(perfil);
                }
            }
            if (comObjetos)
            {
                foreach (PerfilVO perfil in perfis)
                {
                    getPerfilXObjetos(perfil);
                }
            }
            return perfis;
        }
        public static List<PerfilVO> getPerfis()
        {
            StringBuilder query = new StringBuilder();

            query.AppendLine("SELECT IdPerfil, Perfil ");
            query.AppendLine("FROM perfil ");
            query.AppendLine("ORDER BY perfil ");

            MySqlCommand cmd = getConnection();
            cmd.CommandText = query.ToString();

            MySqlDataReader reader = null;
            try
            {
                cmd.Connection.Open();

                reader = cmd.ExecuteReader();

                List<PerfilVO> listPerfil = new List<PerfilVO>();

                while (reader.Read())
                {
                    PerfilVO perfilVO = PerfilVO.CreatePerfilVO();
                    perfilVO.idPerfil = reader.GetInt32("IdPerfil");
                    perfilVO.perfil = reader.GetString("Perfil");

                    listPerfil.Add(perfilVO);
                }
                reader.Close();
                return listPerfil;
            }
            catch (Exception ex){ throw ex; }
            finally { cmd.Connection.Close(); }
        }

        public static void setPerfil(PerfilVO perfilVO)
        {
            StringBuilder query = new StringBuilder();

            query.AppendLine("UPDATE perfil ");
            query.AppendLine("SET Perfil=?Perfil ");
            query.AppendLine("WHERE IdPerfil=?IdPerfil ");

            MySqlCommand cmd = getConnection();
            cmd.CommandText = query.ToString();

            cmd.Parameters.AddWithValue("?IdPerfil", perfilVO.idPerfil);
            cmd.Parameters.AddWithValue("?Perfil", perfilVO.perfil);

            try
            {
                cmd.Connection.Open();

                cmd.ExecuteNonQuery();
            }
            catch (Exception ex) { throw ex; }
            finally { cmd.Connection.Close(); }

        }

        public static long newPerfil(PerfilVO perfilVO)
        {
            StringBuilder query = new StringBuilder();

            query.AppendLine("INSERT INTO perfil ");
            query.AppendLine("SET Perfil=?Perfil ");

            MySqlCommand cmd = getConnection();
            cmd.CommandText = query.ToString();

            cmd.Parameters.AddWithValue("?Perfil", perfilVO.perfil);

            try
            {
                cmd.Connection.Open();

                cmd.ExecuteNonQuery();
                return cmd.LastInsertedId;
            }
            catch (Exception ex) { throw ex; }
            finally { cmd.Connection.Close(); }

        }

        public static void delPerfil(PerfilVO perfilVO)
        {
            StringBuilder query = new StringBuilder();

            query.AppendLine("DELETE FROM perfil ");
            query.AppendLine("WHERE IdPerfil=?IdPerfil ");

            MySqlCommand cmd = getConnection();
            cmd.CommandText = query.ToString();

            cmd.Parameters.AddWithValue("?IdPerfil", perfilVO.idPerfil);

            try
            {
                cmd.Connection.Open();

                cmd.ExecuteNonQuery();
            }
            catch (Exception ex) { throw ex; }
            finally { cmd.Connection.Close(); }

        }
    }
}
